//The MIT License
//
//Copyright (c) 2009 nodchip
//
//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
//
//The above copyright notice and this permission notice shall be included in
//all copies or substantial portions of the Software.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.
package tv.dyndns.kishibe.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.widgetideas.graphics.client.Color;
import com.google.gwt.widgetideas.graphics.client.GWTCanvas;
import com.googlecode.gchart.client.GChart;
import com.googlecode.gchart.client.GChartCanvasFactory;
import com.googlecode.gchart.client.GChartCanvasLite;

public class QMAClone implements EntryPoint {
	private static final String ADMINISTRATOR_MODE = "administratormode";

	public void onModuleLoad() {
		Window.enableScrolling(false);
		RootPanel.get("slot").add(Controller.getInstance());
		RootPanel.get("position_selecter").add(WidgetPositionSelecter.getIstance());
		RootPanel.get("title").setVisible(false);

		final String token = History.getToken();
		if (token.equals(ADMINISTRATOR_MODE)) {
			SharedData.getInstance().setAdministoratorMode(true);
		}
		GChart.setCanvasFactory(new GWTCanvasBasedCanvasFactory());
	}

	public class GWTCanvasBasedCanvasLite extends GWTCanvas implements GChartCanvasLite {
		@Override
		public void setStrokeStyle(String canvasStrokeStyle) {
			setLineJoin(GWTCanvas.ROUND);
			setStrokeStyle(new Color(canvasStrokeStyle));
		}

		@Override
		public void setFillStyle(String canvasFillStyle) {
			setFillStyle(new Color(canvasFillStyle));
		}
	}

	public class GWTCanvasBasedCanvasFactory implements GChartCanvasFactory {
		@Override
		public GChartCanvasLite create() {
			return new GWTCanvasBasedCanvasLite();
		}
	}
}
